home *** CD-ROM | disk | FTP | other *** search
-
-
- Copyright (why not...)
- ----------------------
-
- SaveNames v1.4 software and documentation are copyrighted © 1995-1996
- by Marcin Orlowski. All Rights Reserved.
-
- Update to v1.4 is made by Tadek Knapik. Thanks.
-
-
- Distribution (pirate or die!)
- -----------------------------
-
- Freely distributable in complete archive with following files included:
-
- SaveNames.c - source code
- SaveNames.c.info - source icon
- SaveNames.doc - this documentation
- SaveNames.doc.info - documentation icon
- SaveNames.man - this documentation in UNIX's man format
- SaveNames - Amiga executable
- SaveNames.info - Amiga executable icon
- SD!.displayme - our BBS info
-
-
- Disclaimer (as always :)
- ------------------------
-
- No responsibility or liability will be accepted for any damage that
- may appear to have resulted from use of this program. All use is at
- your own risk. The software is provided "as is" without any warranty
- implied or otherwise to the fitness or accuracy of the software and
- documentation. The author reserves the right to update the software
- and/or documentation without notice.
-
-
- Usage (what is it!?)
- --------------------
-
- Some people (like me) are forced to use pee-cee machines to transfer
- files from internet to my Amiga (it doesn't mean I've bought a pc
- for my own! I use (big word:) it only at my technical university).
- As you all know, no one needs more chars to name his files than 8.3,
- which seems to be a 'professional filename format'. Any other, longer
- names are obsolete and should be forbidden. Unfortunately both Amiga
- and Unix based machines use longer names for their files, so
- transfering files between those platforms via pc causes 90% of name
- (mainly dots :) to be eaten by pc. So I decided to cure this.
- SaveNames is the medicine against. What does it do? Lets say, you want
- to transfer some files stored in directory 'MyFiles' on your Unix
- account to Amiga via pc floppies. Files use 'obsolete' names:
-
- kickstart
- KICKdisk.info
- kickstart.info
-
- So before you start to copy them to disk type:
-
- SaveNames C MyFiles
-
- and names of all files in this directory are converted ('C' means
- 'CODE' and may be lowercase or mixedcase) to less than 8 chars (suffix
- 'PCP' (pc protection :) will also be added to allow you easily detect
- those files, or automate decoding e.g. via DOpus FileClass. If you use
- DOpus set class checking to: "MATCHNAME WFMHFile.idx OR MATCHNAME #?.pcp"
- and operation to "(AmigaDos) SaveNames D {s}" and you will decode files
- by doubleclick.). Phew, you said? No big deal? pc does it itself! Bet it
- doesn't. If you look in your 'MyFiles' drawer you'll find the new file
- named 'WFMHFile.idx' looking like that:
-
- 7204094 kickstart
- 720704c KICKdisk.info
- 72085c4 kickstart.info
-
- Got it? Yes! Those data are used to restore filenames after whole
- transfer on destination machine. How to do this? Copy transfered files
- from pc disks to one directory on your Amiga disk (e.g. 'MyFilesToo')
- and type:
-
- SaveNames D MyFilesToo
-
- This time command 'D' means 'Decode'. Program opens file index
- described below and renames all known (stored in index) files back
- to theirs original names. Simple? Yes, it is. And it works too!
-
- NOTES: Command 'D' has special, expanded mode, activating by '-'
- as command prefix: '-D'. See 'Technical Info' chapter to find
- out what this feature is for.
-
- While names coding SaveNames shows you estimated number of disks
- you will need to store all your crypted files on. If you want
- do this calculation without main code process use '-C' command
- instead of 'C'
-
- Since version 1.4 SaveNames has ability to split large files into smaller
- pieces. For what? Imagine you have just downloaded Aminet Index (as I had).
- It's big, isn't it? Of course I compressed it, but it was still more KBytes
- than PC DD diskette (however it would fit on Amiga DD harmless :-).
- SaveNames can help you manage it. Just type:
-
- SaveNames C MyFiles SplitSize
-
- which means you want files larger than <SplitSize> bytes to be parted
- into smaller pieces (with size defined as SplitSize). In result you get:
-
- 78003582.pc0
- 78003582.pc1
- 78003582.pc3
- ............
- ............
- 78003582.p74
-
- while WFMHFile.idx still holds only one entry with '78003582.pcp'.
- Joining is done during DECODing automatically and fully transparently
- whenever needed. No need for extra switches and keywords to be used.
-
- Thanks to this option you don't have to use another program for splitting.
- SaveNames does everything, and does it in a convenient way, not leaving
- you with partial files after rejoining, like some splitters (unless an
- error occures, of course).
-
- Note: To split a file, you need spare space equal to size of splitting
- file (obvious). To join it back it, you need spare space of equal to
- SplitSize you used while splitting. Be careful on low storage (disk full).
- Splitting may take a while...
-
- You can use any SplitSize you want but SaveNames assumes you know what you
- are doing so therefore it got no superb dumb filters built-in and is not
- idiot-proof. Every file can be maximally splited into 999 due to pee-see
- poor filename scheme. This should be enough for almost all cases (hey,
- you're not downloading encyclopedia everyday, are you?). Instead
- of typing '720000' or '1440000' as SplitSize you can use 'DD' or 'HD'
- equivalents (case insensitive).
-
-
- Requirements
- ------------
-
- Something with Intel outside, few bytes of free memory, files to eat,
- 2 busty babes and 1 big beer.
-
-
- Technical info (sounds soooo wise... :)
- ---------------------------------------
-
- Portability is base idea of this project, so SaveNames is written in
- plain ANSI C and may be simply compiled on any machine. If you find any
- problems, let me know! And do not compile it on pc - it doesn't have any
- sense... :)
-
- Unfortunately small changes, as always, have to be done before you run
- the compiler, so look into the source, and select your platform (for
- now AMIGA, UNIX (being honest IRIX) and LINUX is checked and supported.
- If you port it to Mac world let me know and send changes to me (in this
- case please do only small GUI). AMIGA side was tested on my A4000, UNIX
- platform was tested on SILICON GRAPHICS' IRIS INDIGO and HP. LINUX side
- was tested on... LINUX side :-)
-
- Name encoding is done in two passes. 1st pass - scanning directory
- and building coded names, 2nd pass renaming files and writting
- index file. It has to be done this way, because scanning directory
- while it is changing, may (and in 99% it does) put the program in the
- infinite loop. Sometimes we may also miss some files. Decoding is done
- in one pass.
-
- Starting to decode, program tries to read index file first. First it
- tries to open file named 'WFMHFile.idx'. If file couldn't be found,
- it tries to open file again, with name in lowercase and if it fails
- to, the last try use uppercased name. This is important mainly for
- Unix side, because Unix is case-sensitive. So if you transferred
- your files via pc, the names may be 'fixed' to lower or uppercase.
- While decoding, program may do the same trick with files to decode,
- but this feature is defaulty off, which means that only one try is
- attemped, and filenames are supposed to be exactly the same as while
- coding. Use '-D' instead of 'D' to turn this mode on.
-
- You may convert as many file names as you wish, because there's no
- static arrays, but dynamicaly build list. You are only limited by your
- memory. To code 1000 names you will need, on Amiga, about 266KB. Why
- only 266KB? Because every name is stored in a list's entry containing
- pointer to next entry (on 32bit machines it takes 4 bytes), converted
- name (12 chars + trailing zero) and original file name. The size of last
- entry depends on your system. In your system includes, you will find
- definition of MAXNAMELEN, which limits max length of filename. On Amiga
- it's set to 255 chars. For now it's too much, because you cannot use names
- longer than 30 chars (because there's no more free bytes on disk block).
- So if you are REALLY out of memory, you may change this by hand (see
- included source). Safe value is 108, because system structure
- FileInfoBlock reserves exactly 108 bytes for filename. You may save then
- few bytes. E.g. for those 1000 files mentioned above, with MAXNAMELEN
- set to 30 you will save 248KB, with MAXNAMELEN set to 108, only :) 145
- KB but think what are you doing! You probably never code more than 100
- names in one session and you surely do not use A1000 with 256 KB RAM. So
- better leave MAXNAMELEN alone...
-
- You may ask: How do you code filenames to those weird numbers, pal?
- I answer: I do not code it at all! I'm just copying file's own INode
- (it's kind of FileHandle on Unix machines). Because all filesystems
- use almost the same algorithms, it also use INodes without any tricks
- (maybe pc does it different, but who cares pc?). Sometimes it is
- called INode, sometimes FileHandle and sometimes BlahBlahBlah, but
- it always means the same - almost unique number belongs to file.
- On Amiga side I could use GetUniqueID() from utility.library, but
- it is available under OS3.0 and newer and, what is more important,
- generates only 4294967295 unique numbers. That's all.
-
-
- Bugs (eep...)
- -------------
-
- Program doesn't recognize if name belongs to directory or to file and
- treats all the same. For now, it also can't scan directories
- recursively. Solution: do not create subdirs in drawer you want
- SaveNames to process.
-
- There may appear some problems if you will have two files in the dir,
- being in fact links to other file. In this case INode will be the
- same. Solution: use proper file instead of its shadows.
-
- You must _not_ have file named 'WFMHFile.idx' in your drawer, because
- while encoding/decoding it's written/read sequentially. So while
- encoding it may be overwriten (but not if it is 1st file
- in directory :). While decoding it will be skipped, because of
- already opened (being in use) file with the same name. Solution:
- rename your file :)
-
- On Amiga side SaveNames doesn't work when called from WB. If I find some
- spare time I maybe add this, but I am not quite sure it's really needed.
-
- If you have transferred this archive from Unix account to your
- machine via pc, you have probably noticed that few letters have been
- eaten.. You should use... SaveNames to avoid it! :)
-
- Some older compilers requires the function to be declared in old C&R
- style (see the source if you don't know what it's about). If you are
- own such a compiler, simply uncommet the OLD_STYLE definition before
- you start to compile the program.
-
-
- Future plans (wow!)
- -------------------
-
- If someone finds a reason to decode single files too, I will add this
- feature on request, bacause it's easy to do... :)
-
- I also may add WB handling, but I don't think anybody needs this.
-
- Recursive directory scanning.
-
-
- History (what has happen to the Sherlock Holmes in the past)
- ------------------------------------------------------------
-
- * v1.0 - Initial release
- Worldwide distribution
- SaveNames-mania....
-
- * v1.1 - WARNING: Internal format of the 'WFMHFile.idx'
- has been changed! Better decode all old stuff
- before you install this release!
-
- Changes:
-
- - LINUX and gcc differences and needs supported
- - Unnecessary %ld's replaced by %d's
- - SaveNames could not find the index file on Unix
- side if its name was 'processed' by pc (see doc)
-
- Reported by Niklas Edmundsson
-
- - Added old C&R function declaration for older compilers
- (this feature is switchable and defaulty is off)
- - SaveNames will not remove 'WFMHFile.idx' index file
- if restoring was not 100% successed
-
- Sugested by Konrad Dubiel
-
- * v1.2 - Expand decoding mode added (see 'Technical Info').
- - Solved problems with names contain spaces (this was
- the main reason I've changed the index file format).
- - SaveNames can now calculate number of disks you will
- need to store contents of your dir on floppies
- (both for Amiga and pc disks) and number of bytes
- left free on the last diskiette.
- - New command '-C' ('-COUNT') added, which scans given
- directory and counts total length of files and
- floppy disk usage (while coding, those information
- will also be shown).
- - Source slightly rewritten.
-
- * v1.3 - Small code improvements (it's now even more portable :-)
- - Enforcer hit removed
-
- * v1.4 - File splitting added.
- - Bug fix: Now doesn't lock up if you already have
- WFMHFile.idx in the dir and want to CODE something.
- - Now statistics shows total size in KB or MB only
- when needed (no more 0 KB etc).
-
- * v1.5 - If a size of given file was multipler of specified
- splitsize, an error was reported and no entry was
- added to WFMHFile.idx for this file. Fixed.
- - Function div() not used any more (helps under SunOS 4).
- - Amiga version string added.
- - SunOS 4 direct support.
-
-
- Author (it's me, it's me)
- -------------------------
-
- Marcin Orlowski
- ul. Radomska 38
- 71-002 Szczecin
- Poland
-
- E-Mail: carlos@dedal.man.szczecin.pl
- WWW : http://www.szczecin.pl/~carlos
-
- FidoNet: Marcin Orlowski@2:481/22.2
- GlobalNet: Marcin Orlowski@52:4800/6
-
-
- Responsible for SaveNames v1.4+ is:
-
- Tadek Knapik
- ul. Duza Gora 35/88
- 30-857 Krakow
- Poland
-
- E-Mail: tadek@student.uci.agh.edu.pl
-
- Improving SaveNames from v1.3 to v1.4 (with the author's agreement) is
- the first thing I've done in C (excluding K&R's Chapter 1 exercises :-)
- so it may be somewhat strange kind of code. It WORKS, but you should
- look at it if you're not very trusting person... :-)
-
-
- --------------------- C O M M E R C I A L B R E A K --------------------
-
- ______ __ __
- / ____//_/ / / Find your way to the smallest & slowest
- / /___ __ / / __ __ ______ _____
- /___ // / / / / / / // ____// .__/ BBS in central Europe !!!
- ____/ // /_ / /_ / /_/ // __/_ / /
- /_____//___//___/ \____//_____//_/ W.F.M.H. support
- __
- ____ GlobalNET: 52:4800/6 __ / /
- +48 91 540431 / __ \ FidoNET: 2:481/22.2 / / \/
- / / / /_____ ______ ______ _ _ / / ______
- 24 Hours / Day / / / // .__// ____// __ // \_/ \ /_/ / ____/
- / /_/ // / / __/_ / __ // /__/ / __ _\__ /
- 1200-19200 bps /_____//_/ /_____//_/ /_//_/ /_/ /_/ /_____/
-
- Serving on A3000, 2CDTVs, 2A500+, 5 additional CD-ROMs on-line
- For all Amigas, Macs, C64 and Spectrum fans
-